
# 能够装饰各种参数格式的函数的装饰器
# 写一个装饰器函数，能够在被装饰函数调用的前后执行如下两条语句
def mydecorator(fn):
    def wrap_func(*args, **kwargs):
        print('被装饰函数调用前')
        r = fn(*args, **kwargs)
        print('被装饰函数调用后')
        return r
    return wrap_func

@mydecorator
def myfunc2(a, b, c, d=100):
    print('myfunc2 被调用', (a, b, c, d))
    return a + b + c + d

value2 = myfunc2(10, 20, 30)
print('value2:', value2)

@mydecorator
def myfunc1(a, b):
    print('myfunc1 被调用！', (a, b))
    return a + b

value = myfunc1(100, 200)
print('value:', value)
# 打印
# 被装饰函数调用前
# myfunc1 被调用！', (100, 200)
# 被装饰函数调用后